/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pfc.arbol;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.io.File;
import java.util.Enumeration;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import pfc.comun.IDEpfc;
import pfc.comun.Proyecto;

/**
 *
 * @author xandru
 */
public abstract class PFCTreeNode extends DefaultMutableTreeNode{

    Proyecto proyecto;
    JPopupMenu popupMenu;
    String dsFile;
    String dbModelFile;
    String entityModelFile;
    String codeGenerationFile;
    String nombre;


    public PFCTreeNode(String nombre)
    {
        super(nombre);
        this.nombre = nombre;
        
        proyecto=null;
        construirMenuContexto();
    }

    public PFCTreeNode(Proyecto p,String nombre)
    {
        super(nombre);
        this.nombre = nombre;
        proyecto = p;
        dsFile = proyecto.path + File.separator + "db" + File.separator + proyecto.nombre + "-ds.properties";
        dbModelFile = proyecto.path + File.separator + "db" + File.separator + "dbmodel-base.xml";
        entityModelFile = proyecto.path + File.separator + "db" + File.separator + "ermodel.xml";
        codeGenerationFile =  proyecto.path + File.separator +  "cgmodel.xml";
        
        construirMenuContexto();
    }

   public void click(java.awt.event.MouseEvent e){

       if (e.getButton() == MouseEvent.BUTTON3) {
            mostrarMenuContexto(e);

        }
       /*
   if(e.getClickCount() == 1) {
                 System.out.println("Click " + this.getClass().getName());
             }
             else if(e.getClickCount() == 2) {
                 System.out.println("DoubleClick" + this.getClass().getName());
             }
        * 
        */
   };

    protected void mostrarMenuContexto(MouseEvent e) {
        if (popupMenu!=null)
            popupMenu.show( IDEpfc.app , e.getXOnScreen(), e.getYOnScreen());
    }


    

    protected void construirMenuContexto() {
        
        popupMenu = new JPopupMenu();
        /*
        JMenuItem mi = new JMenuItem("Propiedades");
        mi.setActionCommand("showProperties");
        //mi.addActionListener(this);
        

        mi.addActionListener(new java.awt.event.ActionListener() {
                                public void actionPerformed(java.awt.event.ActionEvent e) {
                                    showProperties();
            }

        });



        popupMenu.add(mi);
        mi.setEnabled(true);
         * 
         */
        popupMenu.add(new JSeparator());
         
         
    }

    public void showProperties() {
                System.out.println("Clase Base. Mostrando propiedades de " + this.getClass().getName());
            }


    protected TreeNode findFirstChild(Class<ERModelTreeNode> aClass) {

        Enumeration e = this.preorderEnumeration();
        while (e.hasMoreElements())
        {
            TreeNode n = (TreeNode)e.nextElement();
            if (n.getClass()==aClass)
                return n;
        }

        return null;
    }

    public Proyecto getProject() {
        return proyecto;
    }

    public String getCodeGenerationFile() {
        return codeGenerationFile;
    }

    public String getERModelFile() {
        return this.entityModelFile;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }


    
}
